package model

import (
	"dag2.0/gat1400-proxy/model/gat1400/base"
	"dag2.0/gat1400-proxy/model/standard"
	"dag2.0/gat1400-proxy/model/types"
)

const ()

//通知结构体

type SubscribeNotificationModel struct {
	SubscribeNotificationListObject *SubscribeNotificationListObject `json:"SubscribeNotificationListObject"`
}

type SubscribeNotificationListObject struct {
	SubscribeNotificationObject []*SubscribeNotification `json:"SubscribeNotificationObject"`
}

type SubscribeNotification struct {
	NotificationID     string                    `json:"NotificationID"`               //通知标识,必填项
	SubscribeID        string                    `json:"SubscribeID"`                  //订阅标识,必填项
	Title              string                    `json:"Title,omitempty"`              //订阅标题,必填项
	TriggerTime        string                    `json:"TriggerTime,omitempty"`        //触发时间，格式示例：20200311123225,必填项
	InfoIDs            string                    `json:"InfoIDs,omitempty"`            //订阅通知的详细信息(人员、人脸、机动车、非机动车、物品、场景)标识集合,必填项
	CaseObjectList     []*Case                   `json:"CaseObjectList,omitempty"`     //视频案事件
	TollgateObjectList *TollgateListObjectEntity `json:"TollgateObjectList,omitempty"` //视频卡口信息数据集
	LaneObjectList     *LaneListObjectEntity     `json:"LaneObjectList,omitempty"`     //车道信息数据集
	DeviceList         *APEListObjectEntity      `json:"DeviceList,omitempty"`         //设备信息数据集
	DeviceStatusList   []*APEStatus              `json:"DeviceStatusList,omitempty"`   // 设备状态 该通知针对批量订阅方式
	APSObjectList      []*APS                    `json:"APSObjectList,omitempty"`      //采集系统 设备网管信息数据集

	APSStatusObjectList       []*APSStatus          `json:"APSStatusObjectList,omitempty"`       // 该通知针对批量订阅方式
	PersonObjectList          *PersonModel          `json:"PersonObjectList,omitempty"`          //人员信息数据集                                    //人员信息数据集
	FaceObjectList            *FaceModel            `json:"FaceObjectList,omitempty"`            //人脸信息数据集
	MotorVehicleObjectList    *MotorVehicleModel    `json:"MotorVehicleObjectList,omitempty"`    // 机动车(过车)信息数据集
	NonMotorVehicleObjectList *NonMotorVehicleModel `json:"NonMotorVehicleObjectList,omitempty"` //非机动车数据集
	ThingObjectList           []*Thing              `json:"ThingObjectList,omitempty"`           //物品列表
	SceneObjectList           []*Scene              `json:"SceneObjectList,omitempty"`           //场景列表

	//连云港地标扩展
	ExecuteOperation int `json:"ExecuteOperation"` //更新项目 1-添加 2-修改 3-删除
}

// APElist
type APEListObject struct {
	APEListObject *APEListObjectEntity `json:"APEListObject"`
}

type APEListObjectEntity struct {
	APEObject []*APE `json:"APEObject,omitempty"`
}
type TollgateListObject struct {
	TollgateListObject *TollgateListObjectEntity `json:"TollgateListObject"`
}

type TollgateListObjectEntity struct {
	TollgateObject []*Tollgate `json:"TollgateObject,omitempty"` //卡口集合
}
type LaneListObject struct {
	LaneListObject *LaneListObjectEntity `json:"LaneListObject"`
}
type LaneListObjectEntity struct {
	LaneObject []*Lane `json:"LaneObject"`
}

func BuildAPEFromUrmEquipments(equipments []*URMEquipment) []*APE {
	apes := make([]*APE, 0)
	for _, equipment := range equipments {
		//处理functionType
		functionType := standard.StandardChoose().GetFunctionType(equipment.WorkFunction)
		//处理placeCode
		PlaceCode := standard.StandardChoose().GetPlaceCode(equipment.PlaceCode)

		if equipment.Model == "" {
			equipment.Model = "IPC"
		}

		apes = append(apes, &APE{
			ApeID:     equipment.GbID,
			Name:      equipment.Name,
			Model:     equipment.Model,
			IPAddr:    equipment.IPAddr,
			IPV6Addr:  equipment.Ipv6Addr,
			Port:      equipment.Port,
			Longitude: equipment.Longitude,
			Latitude:  equipment.Latitude,
			PlaceCode: PlaceCode,
			Place:     equipment.Place,
			//OrgCode:   equipment.RegionCode,
			UserId:           equipment.UserName,
			Password:         equipment.Password,
			IsOnline:         "1",
			FunctionType:     functionType,
			UrmId:            equipment.ID,
			UrmCrateTime:     equipment.CreateTime,
			AreaType:         "11",
			PositionType:     "4/10",
			PassDirection:    "3/4",
			MonitorDirection: "9",
			//Place:            tollgate.Place,
			//OrgCode:  tollgate.OrgCode,
		})
	}
	return apes
}

func BuildAPEFromUrmTollgate(tollgates []*URMTollgate) []*APE {
	apes := make([]*APE, 0)
	for _, tollgate := range tollgates {
		for _, equipment := range tollgate.EquipmentList {
			if equipment.Model == "" {
				equipment.Model = "IPC"
			}
			apes = append(apes, &APE{
				ApeID:        equipment.GbID,
				Name:         equipment.Name,
				Model:        equipment.Model,
				IPAddr:       equipment.IPAddr,
				Port:         equipment.Port,
				Longitude:    tollgate.Longitude,
				Latitude:     tollgate.Latitude,
				PlaceCode:    tollgate.PlaceCode,
				IsOnline:     "1",
				FunctionType: "1",
				//Place:            tollgate.Place,
				//OrgCode:  tollgate.OrgCode,
				UserId:        equipment.UserName,
				Password:      equipment.Password,
				AreaType:      "11",
				PositionType:  "4/10",
				PassDirection: "3/4",
				UrmId:         equipment.ID,
				UrmCrateTime:  equipment.CreateTime,
				//FunctionType:
				MonitorDirection: "9",
			})
		}

	}
	return apes
}

func BuildTollgate(urmTollgates []*URMTollgate) []*Tollgate {
	tollgates := make([]*Tollgate, 0)
	for _, urmTollgate := range urmTollgates {
		// 河北安平项目
		orgCode := urmTollgate.PlaceCode
		if orgCode == "" || len(orgCode) != 12 {
			orgCode = urmTollgate.RegionCode
			if orgCode == "" || len(orgCode) != 12 {
				orgCode = urmTollgate.OrgCode
			}
		}
		tollgates = append(tollgates, &Tollgate{
			TollgateID: urmTollgate.GbID,
			Name:       urmTollgate.Name,
			Longitude:  urmTollgate.Longitude,
			Latitude:   urmTollgate.Latitude,
			PlaceCode:  urmTollgate.PlaceCode,
			//Place:         ,
			Status:        "1",
			TollgateCat:   "99",
			TollgateUsage: 82,
			LaneNum:       urmTollgate.LaneNum,
			//OrgCode:       urmTollgate.OrgCode,
			// 安平项目：下级大华推送dag的PlaceCode长度为20位
			// 若OrgCode取PlaceCode的值，长度超过12位，海康校验不通过
			OrgCode: orgCode,
			//OrgCode:       urmTollgate.PlaceCode,
			ActiveTime:   "",
			UrmId:        urmTollgate.ID,
			UrmCrateTime: urmTollgate.CreateTime,
			FunctionType: "1/2",
		})
	}
	return tollgates
}
func BuildLaneByTg(urmTollgates []*URMTollgate) []*Lane {
	lanes := make([]*Lane, 0)
	for _, urmTollgate := range urmTollgates {
		var equipments = make(map[string]string, 0)
		for _, equipment := range urmTollgate.EquipmentList {
			equipments[equipment.ID] = equipment.GbID
		}
		for _, urmLane := range urmTollgate.LaneList {
			lanes = append(lanes, &Lane{
				LaneId:       urmLane.LaneNo,
				LaneNo:       urmLane.LaneNo,
				TollgateID:   urmTollgate.GbID,
				Name:         urmLane.Name,
				Direction:    "9",
				Desc:         "",
				MaxSpeed:     0,
				CityPass:     0,
				ApeID:        equipments[urmLane.EquipmentID],
				UrmId:        urmLane.ID,
				UrmCrateTime: urmLane.CreateTime,
			})
		}
	}
	return lanes
}
func BuildLane(urmLanes []*URMLane) []*Lane {
	lanes := make([]*Lane, 0)
	for _, urmLane := range urmLanes {
		lanes = append(lanes, &Lane{
			LaneId:       urmLane.LaneNo,
			LaneNo:       urmLane.LaneNo,
			TollgateID:   urmLane.TollgateID_,
			Name:         urmLane.Name,
			Direction:    "9",
			Desc:         "",
			MaxSpeed:     0,
			CityPass:     0,
			ApeID:        urmLane.EquipmentID,
			UrmId:        urmLane.ID,
			UrmCrateTime: urmLane.CreateTime,
		})
	}
	return lanes
}

type PersonModel struct {
	//TODO ...
}
type FaceModel struct {
	//TODO ...
}
type MotorVehicleModel struct {
	MotorVehicleObject []*MotorVehicleObject `json:"MotorVehicleObject"`
}
type NonMotorVehicleModel struct {
	//TODO ...
}

type Case struct {
	//TODO ...
}

type Tollgate struct {
	TollgateID    string  `json:"TollgateID,omitempty"`    //卡口ID R
	Name          string  `json:"Name,omitempty"`          //名称 R
	Longitude     float64 `json:"Longitude,omitempty"`     //经度 R
	Latitude      float64 `json:"Latitude,omitempty"`      //纬度 R
	PlaceCode     string  `json:"PlaceCode,omitempty"`     //安装地点行政区划代码 R
	Place         string  `json:"Place,omitempty"`         //位置名 O
	Status        string  `json:"Status,omitempty"`        //卡口状态 1正常， 2停用， 9其他 R
	TollgateCat   string  `json:"TollgateCat,omitempty"`   //卡口类型 R
	TollgateUsage int     `json:"TollgateUsage,omitempty"` //卡口用途 R 80治安卡口，81交通卡口，82其他
	LaneNum       int     `json:"LaneNum,omitempty"`       // 卡口车道数 O
	OrgCode       string  `json:"OrgCode,omitempty"`       //管辖单位代码 O
	ActiveTime    string  `json:"ActiveTime,omitempty"`    //卡口启用时间 O
	UrmId         string  `json:"-"`                       //urmId,判断增量用
	UrmCrateTime  int64   `json:"-"`                       //urm时间,判断增量用
	FunctionType  string  `json:"functionType"`            // 1、 车辆卡口； 2、 人员卡口； 3、 微卡口；99 其他， 多选各 参数以“ /” 分隔
}

type Lane struct {
	LaneId       int    `json:"LaneId,omitempty"`     //车道ID R
	LaneNo       int    `json:"LaneNo,omitempty"`     //车道编号 R
	TollgateID   string `json:"TollgateID,omitempty"` //卡口编号 R
	Name         string `json:"Name,omitempty"`       //名称 R
	Direction    string `json:"Direction,omitempty"`  //车道方向  R
	Desc         string `json:"Desc,omitempty"`       //车道描述 O
	MaxSpeed     int    `json:"MaxSpeed,omitempty"`   //限速 O
	CityPass     int    `json:"CityPass,omitempty"`   //车道出入城 1 进城、2出城、3非进出城、4 进出城混合
	ApeID        string `json:"ApeID,omitempty"`      //设备ID 车道上对应的采集处理设备ID
	UrmId        string `json:"-"`                    //urmId,判断增量用
	UrmCrateTime int64  `json:"-"`                    //urm时间,判断增量用
}

type APE struct {
	ApeID            string  `json:"ApeID,omitempty",valid:"required"`               //设备ID R
	Name             string  `json:"Name,omitempty",valid:"required"`                //名称 R
	Model            string  `json:"Model,omitempty",valid:"required"`               //型号 R
	IPAddr           string  `json:"IPAddr,omitempty",valid:"required,ipv4"`         //IP地址 R
	IPV6Addr         string  `json:"IPV6Addr,omitempty",valid:"-"`                   //IPv6地址
	Port             int     `json:"Port,omitempty",valid:"required,port"`           //端口号 R
	Longitude        float64 `json:"Longitude,omitempty",valid:"required,longitude"` //经度 R
	Latitude         float64 `json:"Latitude,omitempty",valid:"required,latitude"`   //纬度 R
	PlaceCode        string  `json:"PlaceCode,omitempty",valid:"required"`           //安装地点行政区划代码 R
	Place            string  `json:"Place,omitempty"`                                //位置名 O
	OrgCode          string  `json:"OrgCode,omitempty"`                              //管辖单位代码 O
	CapDirection     int     `json:"CapDirection,omitempty"`                         //车辆抓拍方向 0：拍车头；1：拍车尾，兼容无视频卡口信息设备 O
	MonitorDirection string  `json:"MonitorDirection,omitempty"`                     //监视方向 O
	MonitorAreaDesc  string  `json:"MonitorAreaDesc,omitempty"`                      //监视区域说明 O
	IsOnline         string  `json:"IsOnline,omitempty"`                             //是否在线  R
	OwnerApsID       string  `json:"OwnerApsID,omitempty"`                           //所属采集系统  O
	UserId           string  `json:"UserId,omitempty"`                               //用户帐号 O
	Password         string  `json:"Password,omitempty"`                             //口令 O
	FunctionType     string  `json:"FunctionType,omitempty"`                         //1、车辆卡口； 2、人员卡口；3、微卡口； 4、特征摄像机；5、普通监控；6、高空瞭望摄像机；7、人体卡口；8、门禁点；9、探针；10、电子围栏；11、RFID事件采集设备；12电子车牌采集设备；99其他， 多选各参数以“ /” 分隔
	PositionType     string  `json:"PositionType,omitempty"`                         //摄像机位置类型
	TollgateID       string  `json:"TollgateID,omitempty"`
	AreaType         string  `json:"AreaType,omitempty"`      //所属区域
	PassDirection    string  `json:"PassDirection,omitempty"` //监视出入方向
	UrmId            string  `json:"-"`                       //urmId,判断增量用
	UrmCrateTime     int64   `json:"-"`                       //urm时间,判断增量用
}

type APEStatus struct {
	//TODO ...
}

type APS struct {
	//TODO ...
}

type APSStatus struct {
	//TODO ...
}

type Thing struct {
	//TODO ...
}

type Scene struct {
	//TODO ...
}
type MotorVehicleObject struct {
	MotorVehicleID       string `json:"MotorVehicleID" validate:"required||string=48||regexp=21-22,02"` //车辆标识 -备注：辆全局唯一标识 R -必选 人脸标识 正则匹配：^\d{20}02\d{26}$
	TollgateID           string `json:"TollgateID,omitempty"`                                           //关联卡口编码 O -可选
	StorageURL1          string `json:"StorageUrl1" validate:"required"`                                //近景照片 -卡口相机所拍照片，自动采集必选，图像访问路径采用URI命名规范 R -必选
	StorageURL2          string `json:"StorageUrl2,omitempty"`                                          //车辆照片 O -可选
	StorageURL3          string `json:"StorageUrl3,omitempty"`                                          //远景照片 全景相机所拍照片 O 可选
	StorageURL4          string `json:"StorageUrl4,omitempty"`                                          //合成图 O 可选
	StorageURL5          string `json:"StorageUrl5,omitempty"`                                          //缩略图 O 可选
	LaneNo               int    `json:"LaneNo,omitempty"`                                               //车道号 O 可选
	Direction            string `json:"Direction,omitempty"`                                            //行驶方向
	VehicleClass         string `json:"VehicleClass,omitempty"`                                         //车辆类型
	VehicleColorDepth    string `json:"VehicleColorDepth,omitempty"`                                    //颜色深浅
	HitMarkInfo          string `json:"HitMarkInfo,omitempty"`                                          //撞痕信息
	VehicleBodyDesc      string `json:"VehicleBodyDesc,omitempty"`                                      //车身描述
	VehicleFrontItem     string `json:"VehicleFrontItem,omitempty"`                                     //车前部物品
	VehicleRearItem      string `json:"VehicleRearItem,omitempty"`                                      //车前部物品描述
	DescOfRearItem       string `json:"DescOfRearItem,omitempty"`                                       //车后部物品
	NumOfPassenger       int32  `json:"NumOfPassenger,omitempty"`                                       //车内人数
	PassTime             string `json:"PassTime,omitempty" validate:"required||datetime"`               //经过时间
	NameOfPassedRoad     string `json:"NameOfPassedRoad,omitempty"`                                     //经过道路名称
	IsSuspicious         string `json:"IsSuspicious,omitempty"`                                         //是否可疑车
	Sunvisor             int32  `json:"Sunvisor,omitempty"`                                             //遮阳板状态
	SafetyBelt           int32  `json:"SafetyBelt,omitempty"`                                           //安全带状态
	Calling              int32  `json:"Calling,omitempty"`                                              //打电话状态
	PlateReliability     string `json:"PlateReliability,omitempty"`                                     //号牌识别可信度
	PlateCharReliability string `json:"PlateCharReliability,omitempty"`                                 //每位号牌号码可信度
	BrandReliability     string `json:"BrandReliability,omitempty"`                                     //品牌标识识别可信度
	DriverFaceID         string `json:"DriverFaceID,omitempty"`                                         //主驾人脸标识
	CopilotFaceID        string `json:"CopilotFaceID,omitempty"`                                        //副驾人脸标识
	VehicleStyles        string `json:"VehicleStyles,omitempty"`                                        //车辆年款
	IsModified           string `json:"IsModified,omitempty"`                                           //改装标志
	AnnualInspectionNum  int32  `json:"AnnualInspectionNum,omitempty"`                                  //车辆年检标数
	MarkerType           int32  `json:"MarkerType,omitempty"`                                           //标志物
	VehicleHeadend       int32  `json:"VehicleHeadend,omitempty"`                                       //车头车尾
	ShieldFace           int32  `json:"ShieldFace,omitempty"`                                           //是否遮挡面部
	PendantsNum          int32  `json:"PendantsNum,omitempty"`                                          //挂件个数
	OrnamentsNum         int32  `json:"OrnamentsNum,omitempty"`                                         //摆件个数
	TissueBoxNum         int32  `json:"TissueBoxNum,omitempty"`                                         //纸巾盒数

	SpecialCar int32 `json:"SpecialCar,omitempty"` //特殊车辆 平谷添加

	DescOfFrontItem string `json:"DescOfFrontItem,omitempty"`
	ResJSON         string `json:"resJson,omitempty"`

	InfoKind          int     `json:"InfoKind,omitempty" validate:"in=0,1,2"`                             //信息分类 -备注：人工采集还是自动采集 R -
	SourceID          string  `json:"SourceID,omitempty" validate:"required||string=41||regexp=21-22,02"` //来源标识 -备注：来源图像标识 R -必选
	DeviceID          string  `json:"DeviceID,omitempty"  validate:"required||string=20"`                 //设备编码 R/O -自动采集时必选
	LeftTopX          int32   `json:"LeftTopX" validate:"integer=0,_"`                                    //左上角X坐标 车的轮廓外界矩形在画面中的位置，记录坐标 R/O 自动采集时必选
	LeftTopY          int32   `json:"LeftTopY" validate:"integer=0,_"`                                    //左上角Y坐标 车的轮廓外界矩形在画面中的位置，记录坐标 R/O 自动采集时必选
	RightBtmX         int32   `json:"RightBtmX" validate:"integer=0,_"`                                   //右上角X坐标 车的轮廓外界矩形在画面中的位置，记录坐标 R/O 自动采集时必选
	RightBtmY         int32   `json:"RightBtmY" validate:"integer=0,_"`                                   //右上角Y坐标 车的轮廓外界矩形在画面中的位置，记录坐标 R/O 自动采集时必选;
	MarkTime          string  `json:"MarkTime,omitempty"`                                                 //位置标记时间 O 人工采集时有效;
	AppearTime        string  `json:"AppearTime,omitempty"`                                               //车辆出现时间 O 人工采集时有效
	DisAppearTime     string  `json:"DisAppearTime,omitempty"`                                            //车辆消失时间 O 人工采集时有效;
	HasPlate          string  `json:"HasPlate,omitempty" validate:"required||in=0,1"`                     //有无车牌号;
	PlateClass        string  `json:"PlateClass,omitempty" validate:"required"`                           //号牌种类;
	PlateColor        string  `json:"PlateColor,omitempty" validate:"required"`                           //车牌颜色;
	PlateNo           string  `json:"PlateNo,omitempty" validate:"required"`                              //车牌号;
	PlateNoAttach     string  `json:"PlateNoAttach,omitempty"`                                            //挂车牌号;
	PlateDescribe     string  `json:"PlateDescribe,omitempty"`                                            //车牌描述;
	IsDecked          string  `json:"IsDecked,omitempty"`                                                 //是否套牌;
	IsAltered         string  `json:"IsAltered,omitempty"`                                                //是否涂改;
	IsCovered         string  `json:"IsCovered,omitempty"`                                                //是否遮挡;
	Speed             float64 `json:"Speed,omitempty"`                                                    //行驶速度;
	DrivingStatusCode string  `json:"DrivingStatusCode,omitempty"`                                        //行驶状态代码;
	// 公安部视图库对接技术中改字段是string类型，且值是非数值，例如：A，B ...
	UsingPropertiesCode int32                    `json:"UsingPropertiesCode,omitempty"`              //车辆使用性质代码;
	VehicleBrand        string                   `json:"VehicleBrand,omitempty"`                     //车辆品牌;
	VehicleModel        string                   `json:"VehicleModel,omitempty"`                     //车辆型号;
	VehicleLength       int32                    `json:"VehicleLength,omitempty"`                    //车辆长度;
	VehicleWidth        int32                    `json:"VehicleWidth,omitempty"`                     //车辆宽度;
	VehicleHeight       int32                    `json:"VehicleHeight,omitempty"`                    //车辆高度;
	VehicleColor        string                   `json:"VehicleColor,omitempty" validate:"required"` //车身颜色 R 必选;
	VehicleHood         string                   `json:"VehicleHood,omitempty"`                      //车前盖;
	VehicleTrunk        string                   `json:"VehicleTrunk,omitempty"`                     //车后盖;
	VehicleWheel        string                   `json:"VehicleWheel,omitempty"`                     //车轮;
	WheelPrintedPattern string                   `json:"WheelPrintedPattern,omitempty"`              //车轮印花纹;
	VehicleWindow       string                   `json:"VehicleWindow,omitempty"`                    //车窗;
	VehicleRoof         string                   `json:"VehicleRoof,omitempty"`                      //车顶;
	VehicleDoor         string                   `json:"VehicleDoor,omitempty"`                      //车门;
	SideOfVehicle       string                   `json:"SideOfVehicle,omitempty"`                    //车侧;
	CarOfVehicle        string                   `json:"CarOfVehicle,omitempty"`                     //车厢;
	RearviewMirror      string                   `json:"RearviewMirror,omitempty"`                   //后视镜;
	VehicleChassis      string                   `json:"VehicleChassis,omitempty"`                   //底盘;
	VehicleShielding    string                   `json:"VehicleShielding,omitempty"`                 //遮挡;
	FilmColor           string                   `json:"FilmColor,omitempty"`                        //贴膜颜色;
	StorageURL          string                   `json:"StorageURL,omitempty"`                       //大图（场景图）路径;
	NationalityCode     string                   `json:"NationalityCode,omitempty"`                  //NationalityCode;
	TabID               string                   `json:"TabID,omitempty"`                            //TabID;
	RelatedType         string                   `json:"RelatedType,omitempty"`                      //关联关系类型【海康提供的标准】;
	Longitude           float64                  `json:"Longitude,omitempty"`                        //设备经度【固定点位设备可选填，移动设备必填】;
	Latitude            float64                  `json:"Latitude,omitempty"`                         //设备纬度【固定点位设备可选填，移动设备必填】
	resJson             string                   `json:"resJson,omitempty"`                          //预留扩展字段
	Similaritydegree    float64                  `json:"Similaritydegree,omitempty"`                 //相似度,车辆相似度，[0，1]
	BreakRuleMode       string                   `json:"BreakRuleMode,omitempty"`                    //违法过车类型,码表对应国标违法过车类型
	LinkFaceInfoList    *types.LinkFaceInfo      `json:"LinkFaceInfoList,omitempty"`                 //关联人脸信息,与该车辆关联的人脸信息
	ExtendFields        *types.MotorExtendFields `json:"ExtendFields,omitempty"`
	SubImageList        *base.SubImageList       `json:"SubImageList,omitempty"` //图像列表;
	FeatureList         *base.FeatureList        `json:"FeatureList,omitempty"`  //FeatureList;
	RelatedList         *base.RelatedList        `json:"RelatedList,omitempty"`  //关联关系实体;

	LinkFaceVehicleID   string `json:"LinkFaceVehicleID,omitempty"`   //车辆与人脸对象关联标识（正驾驶）
	LinkCoFaceVehicleID string `json:"LinkCoFaceVehicleID,omitempty"` //车辆与人脸对象关联标识（副驾驶）

	LinkFaceVehicleId string `json:"LinkFaceVehicleId"` // 江苏人脸车辆关联Id
}
